package com.model.defaults;

import java.util.Map;

import org.hibernate.Session;

import com.core.utils.GlobalConstants;
import com.model.UserContextName;
import com.model.user.UserRole;


public class ModelDefaultRoles {

	public static UserRole createRoleRoot ( Session session,
	                                        Map <String, UserContextName> userContexts ) {

		UserRole userRole = new UserRole();
		userRole.setName("root");

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ADMINISTRATION));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_COMPONENTLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_DASHBOARD));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUP));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECT));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTDELETE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEPERMISSIONS));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLESLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASK));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKWORKLOG));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USER));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSION));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBER));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERUPDATE));


		session.save(userRole);
		return userRole;
	}



	public static UserRole createRoleAdmin ( Session session,
	                                         Map <String, UserContextName> userContexts ) {

		UserRole userRole = new UserRole();
		userRole.setName("administrator");

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ADMINISTRATION));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_COMPONENTLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_DASHBOARD));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUP));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECT));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTDELETE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEPERMISSIONS));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLESLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASK));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKSLIST));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USER));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSION));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONDELETE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONUPDATE));

		session.save(userRole);
		return userRole;
	}



	public static UserRole createRolePM ( Session session,
	                                      Map <String, UserContextName> userContexts ) {

		UserRole userRole = new UserRole();
		userRole.setName("project manager");

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ADMINISTRATION));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_COMPONENTLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_DASHBOARD));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUP));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECT));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTDELETE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTUPDATE));


		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEPERMISSIONS));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLESLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASK));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAUPDATE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKWORKLOG));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USER));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TEAMMEMBERUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSION));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONUPDATE));


		session.save(userRole);
		return userRole;
	}



	public static UserRole createRoleQA ( Session session,
	                                      Map <String, UserContextName> userContexts ) {

		UserRole userRole = new UserRole();
		userRole.setName("QA");


		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ADMINISTRATION));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_COMPONENTLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_DASHBOARD));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUP));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPDELETE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECT));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTUPDATE));


		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEDELETE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEPERMISSIONS));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLESLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASK));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAUPDATE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKWORKLOG));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USER));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSION));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONUPDATE));


		session.save(userRole);
		return userRole;
	}



	public static UserRole createRoleDev ( Session session,
	                                       Map <String, UserContextName> userContexts ) {

		UserRole userRole = new UserRole();
		userRole.setName("developer");

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ADMINISTRATION));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_COMPONENTLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_DASHBOARD));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUP));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_GROUPUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECT));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_PROJECTUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_REPORTUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLE));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEINFO));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEPERMISSIONS));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLESLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_ROLEUPDATE));

		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_SUBTASKSLIST));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASK));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKSLIST));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKAUPDATE));
//		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_TASKWORKLOG));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USER));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERADD));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_USERUPDATE));

		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSION));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONADD));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONDELETE));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONINFO));
		userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONSLIST));
		// userRole.getAvailableContexts().add(userContexts.get(GlobalConstants.USERCONTEXT_VERSIONUPDATE));


		session.save(userRole);
		return userRole;
	}

}
